package com.gnerv.battle.boot.module.base.business;

import com.gnerv.battle.boot.common.base.model.RestResult;
import com.gnerv.battle.boot.module.base.model.dto.NoticeCreateDTO;
import com.gnerv.battle.boot.module.base.model.dto.NoticeDTO;
import com.gnerv.battle.boot.module.base.model.dto.NoticeReceiveDTO;
import com.gnerv.battle.boot.module.base.model.dto.NoticeUpdateDTO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author ligen
 * @description 管理-账户业务操作
 * @createDate 2023-06-08 20:23:32
 */
public interface NoticeBusiness {

    RestResult<Void> create(NoticeCreateDTO noticeCreateDTO);

    RestResult<Void> deleteByUkId(String ukId);

    RestResult<Void> updateByUkId(NoticeUpdateDTO noticeUpdateDTO);

    RestResult<NoticeDTO> selectByUkId(String ukId);

    RestResult<List<NoticeDTO>> listByTitle(String title, Integer page, Integer size);

    @Transactional(readOnly = true)
    RestResult<List<NoticeDTO>> listByAccountUkId(String accountUkId, Integer page, Integer size);

    @Transactional(readOnly = true)
    RestResult<List<NoticeDTO>> listReceive(String status, Integer page, Integer size);

    RestResult<Void> send(NoticeReceiveDTO noticeReceiveDTO);

    RestResult<NoticeDTO> selectReceiveByNoticeUkId(String noticeUkId);
}
